Many organizations use data stores for storing business data, such as financial data and operational data. In order to assist business users to examine their data, various data analyzing applications are proposed. Those data analyzing applications provide various views or reports of data to users. Those data analyzing applications typically have query engines that access the data stores to obtain desired data. The accessed data stores can be either relational or multidimensional stores, which are based on fundamentally different data storage technologies.
Those data analyzing applications issue requests of data from the data stores. A request may contain data agnostic business intelligence (BI) queries that may express date, arithmetic, string manipulation, and other relational style operations. BI users can make such computations on relational data. There is a need for the ability to do the same computation natively on OLAP or dimensional data. Presently, users have had to extract dimensional data, transform, and load it (ETL) into other systems that provide such computation (MS Excel™ for example). This ETL route is time consuming, requires the interventions of IT departments in large organizations, is error prone, and is inefficient compared to being able to perform such computation in the BI system directly.
Some data analyzing applications have Online Analytical Processing (OLAP) query engines to allow users to analyze multidimensional views of data. This type of OLAP is sometimes called Multidimensional OLAP (MOLAP). A MOLAP engine summarizes business data into multidimensional views in advance, and places the summarized data in a cube structure. When a user request is received, the MOLAP engine accesses the summarized data, and thus the MOLAP engine can provide a response to the query very fast. The user can rotate the cube structured data to see a desired view of the data using the MOLAP engine.
There also exist Relational OLAP (ROLAP) query engines that extract data from traditional relational databases. ROLAP engines are able to create multidimensional views on the fly. In order to extract data, those ROLAP engines typically use complex Structured Query Language (SQL) statements against relational tables in the relational databases. ROLAP engines tend to be used on data that has a large number of attributes, where the data cannot be easily placed into a cube structure. ROLAP engines support multidimensional queries issued against relational databases. Some ROLAP engines translate OLAP queries into SQL queries, and other ROLAP query engines implement the access to relational databases using internal communication between components responsible for OLAP and relational operations.
Both MOLAP and ROLAP approaches to the multidimensional data access, even though they use different data storage technologies, provide only the functionality of the multidimensional query language. This query language has a number of significant limitations when it comes to providing relational style operations, such us date, arithmetic and string manipulation operations.
On the other side is the relational query language, SQL, providing a powerful set of operations that manipulate data in accordance with the relational algebra. This set of operations includes the relational style operations that are not natively supported by the multidimensional technologies, including date, arithmetic, and string manipulations. While SQL is ideal for processing transactional data, it has a number of significant limitations when it comes to data analysis and reporting.